/*
 * GeneradorCelda.cpp
 *
 *      Author: sebastian
 */

#include "GeneradorCelda.h"

GeneradorCelda::GeneradorCelda(){

}


GeneradorCelda::GeneradorCelda(Json::Value& root) {
	int suma = 0, parcial = 0;
	for (int i = 0 ; i< PCANTIDAD_IITEMS ; i++){
		probabilidades.push_back(0);
	}

	parcial  = root["probabilidad"]["ButtonAmarillo"].asInt();
	if (parcial != 0) {
		suma+= parcial;
		probabilidades[PAmarillo] = suma;
	}

	parcial = root["probabilidad"]["ButtonAzul"].asInt();
	if (parcial != 0) {
		suma+= parcial;
		probabilidades[PAzul] = suma;
	}

	parcial = root["probabilidad"]["ButtonRojo"].asInt();
	if (parcial != 0) {
		suma+= parcial;
		probabilidades[PRojo] =  suma;
	}

	parcial = root["probabilidad"]["ButtonVerde"].asInt();
	if (parcial != 0) {
		suma+= parcial;
		probabilidades[PVerde] = suma;
	}

	parcial = root["probabilidad"]["ButtonVioleta"].asInt();
	if (parcial != 0) {
		suma+= parcial;
		probabilidades[PVioleta] = suma;
	}

	parcial = root["probabilidad"]["MBVAmarilla"].asInt();
	if (parcial != 0) {
		suma+= parcial;
		probabilidades[PMBVAmarilla] = suma;
	}

	parcial = root["probabilidad"]["MBVAzul"].asInt();
	if (parcial != 0) {
		suma+= parcial;
		probabilidades[PMBVAzul] = suma;
	}

	parcial =  root["probabilidad"]["MBVRoja"].asInt();
	if (parcial != 0) {
		suma+= parcial;
		probabilidades[PMBVRoja] = suma;
	}

	parcial = root["probabilidad"]["MBVVerde"].asInt();
	if (parcial != 0) {
		suma+= parcial;
		probabilidades[PMBVVerde] = suma;
	}

	parcial = root["probabilidad"]["MBVVioleta"].asInt();
	if (parcial != 0) {
		suma+= parcial;
		probabilidades[PMBVVioleta] = suma;
	}

	parcial =  root["probabilidad"]["MBHAmarilla"].asInt();
	if (parcial != 0) {
		suma+= parcial;
		probabilidades[PMBHAmarilla] = suma;
	}

	parcial = root["probabilidad"]["MBHAzul"].asInt();
	if (parcial != 0) {
		suma+= parcial;
		probabilidades[PMBHAzul] = suma;
	}

	parcial = root["probabilidad"]["MBHRoja"].asInt();
	if (parcial != 0) {
		suma+= parcial;
		probabilidades[PMBHRoja] = suma;
	}

	parcial = root["probabilidad"]["MBHVerde"].asInt();
	if (parcial != 0) {
		suma+= parcial;
		probabilidades[PMBHVerde] = suma;
	}

	parcial = root["probabilidad"]["MBHVioleta"].asInt();
	if (parcial != 0) {
		suma+= parcial;
		probabilidades[PMBHVioleta] = suma;
	}

	parcial = root["probabilidad"]["Estrella"].asInt();
	if (parcial != 0) {
		suma+= parcial;
		probabilidades[PEstrella] = suma;
	}
}


Celda GeneradorCelda::generarCelda(){
	float random =  rand()%100+1; // Numero entre 1 y 100

	if (random <= probabilidades[PAmarillo] ) {
		return generarButtonAmarillo();
	}

	if (random <= probabilidades[PAzul] ) {
		return generarButtonAzul();
	}

	if (random <= probabilidades[PRojo]  ) {
		return generarButtonRojo();
	}

	if (random <= probabilidades[PVerde] ) {
		return generarButtonVerde();
	}

	if (random <= probabilidades[PVioleta] ) {
		return generarButtonVioleta();
	}
	if (random <=  probabilidades[PMBVAmarilla]) {
		return generarMiniBarVertical(amarillo);
	}
	if (random <=  probabilidades[PMBVAzul] ) {
		return generarMiniBarVertical(azul);
	}
	if (random <= probabilidades[PMBVRoja]  ) {
		return generarMiniBarVertical(rojo);
	}
	if (random <= probabilidades[PMBVVerde]) {
		return generarMiniBarVertical(verde);
	}
	if (random <=  probabilidades[PMBVVioleta]) {
		return generarMiniBarVertical(violeta);
	}
	if (random <=  probabilidades[PMBHAmarilla] ) {
		return generarMiniBarHorizontal(amarillo);
	}
	if (random <=  probabilidades[PMBHAzul] ) {
		return generarMiniBarHorizontal(azul);
	}
	if (random <= probabilidades[PMBHRoja]  ) {
		return generarMiniBarHorizontal(rojo);
	}
	if (random < probabilidades[PMBHVerde]  ) {
		return generarMiniBarHorizontal(verde);
	}
	if (random <= probabilidades[PMBHVioleta] ) {
		return generarMiniBarHorizontal(violeta);
	}

	return generarEstrella();

}

Celda GeneradorCelda::generarButtonAzul(){
	ButtonAzul azul;
	return azul;
}

Celda GeneradorCelda::generarButtonAmarillo(){
	ButtonAmarillo amarillo;
	return amarillo;
}

Celda GeneradorCelda::generarButtonVioleta(){
	ButtonVioleta violeta;
	return violeta;
}

Celda GeneradorCelda::generarButtonVerde(){
	ButtonVerde verde;
	return verde;
}

Celda GeneradorCelda::generarButtonRojo(){
	ButtonRojo rojo;
	return rojo;
}

Celda GeneradorCelda::generarEstrella(){
	Estrella estrella;
	return estrella;
	return Celda(6);
}

Celda GeneradorCelda::generarMiniBarVertical(int tipo){
	MiniBarVertical miniBarVertical(tipo);
	return miniBarVertical;
}

Celda GeneradorCelda::generarMiniBarHorizontal(int tipo){
	MiniBarHorizontal miniBarHorizontal(tipo);
	return miniBarHorizontal;
}

Celda GeneradorCelda::generarAgujero(){
	Agujero agujero;
	return agujero;
}
